/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Ingresos;
import Controladores.CatedraticoJpaController;
import Controladores.GradoacademicoJpaController;
import Controladores.exceptions.IllegalOrphanException;
import Controladores.exceptions.NonexistentEntityException;
import Controladores.exceptions.PreexistingEntityException;
import Entidades.Catedratico;
import Entidades.Gradoacademico;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.persistence.EntityManagerFactory;
import Usuarios.conexion;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;

/**
 *
 * @author Victor Jose Betancohurt
 */
public class ICatedratico 
{
    public ICatedratico()
    {
    }
    //procedimiento para ingresar catedratico Creado por Victor Jose Betancohurt
    public void guardar(int numeroCatedratico, String Nombre,String apellidos,String telefono, int creditos, float sueldo, Gradoacademico idGradoAcademico)
    {
        EntityManagerFactory emf = conexion.getInstancia().getEMF();
        Catedratico catedratico = new Catedratico();
        CatedraticoJpaController controlador = new CatedraticoJpaController(emf);
        Gradoacademico grado = new GradoacademicoJpaController(emf).findGradoacademico(idGradoAcademico.getIdGradoAcademico());
        catedratico.setAnulado(false);
        catedratico.setNumeroCatedratico(numeroCatedratico);
        catedratico.setApellidos(apellidos);
        catedratico.setCreditos((short)creditos);
        catedratico.setNombre(Nombre);
        catedratico.setTelefono(telefono);
        catedratico.setSueldo(sueldo);
        catedratico.setGradoAcademicoidGradoAcademico(grado);
        try {
            controlador.create(catedratico);
        } catch (PreexistingEntityException ex) {
            Logger.getLogger(ICatedratico.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(ICatedratico.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    //procedimiento para ingresar catedratico Creado por Victor Jose Betancohurt
    public void modificar(Catedratico catedratico)
    {
        EntityManagerFactory emf = conexion.getInstancia().getEMF();
        CatedraticoJpaController controlador = new CatedraticoJpaController(emf);
        try {
            controlador.edit(catedratico);
        } catch (IllegalOrphanException ex) {
            Logger.getLogger(ICatedratico.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ICatedratico.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(ICatedratico.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    //procedimiento para buscar por Id Regresa una clase Catedratico Victor Jose Betancohurt
    public Catedratico buscarId(int id)
    {
        EntityManagerFactory emf = conexion.getInstancia().getEMF();
        CatedraticoJpaController controlador = new CatedraticoJpaController(emf);
        return controlador.findCatedratico(id);
    }
    //funcion para buscar por nombre y regresa una lista de tipo Catedratico
    public List<Catedratico> buscarNombre(String nombre)
    {
        EntityManagerFactory emf = conexion.getInstancia().getEMF();
        EntityManager em = emf.createEntityManager();
        Query qr;
        qr = em.createNamedQuery("Catedratico.findByNombre");
        qr.setParameter("nombre", nombre);
        List<Catedratico> lista = qr.getResultList();
        return lista;
    }
    public List<Catedratico> mostrarTodo()
    {
        EntityManagerFactory emf = conexion.getInstancia().getEMF();
        CatedraticoJpaController controlador = new CatedraticoJpaController(emf);
        return controlador.findCatedraticoEntities();
    }
    public List<Catedratico> mostrarTodoFalse()
    {
        EntityManagerFactory emf = conexion.getInstancia().getEMF();
        EntityManager em = emf.createEntityManager();
        Query qr;
        qr = em.createNamedQuery("Catedratico.findByAnulado");
        qr.setParameter("anulado", false);
        List<Catedratico> lista = qr.getResultList();
        return lista;
    }
    public List<Catedratico> mostrarTodoTrue()
    {
        EntityManagerFactory emf = conexion.getInstancia().getEMF();
        EntityManager em = emf.createEntityManager();
        Query qr;
        qr = em.createNamedQuery("Catedratico.findByAnulado");
        qr.setParameter("anulado", true);
        List<Catedratico> lista = qr.getResultList();
        return lista;
    }
    public String toString(int id)
    {
        Catedratico catedratico = this.buscarId(id);
        return catedratico.toString();
    }
}
